﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace Pacocofose
{
    public class Itens
    {
        #region Variaveis
        Texture2D Item;
        public static Vector2 VetorItem, VetorItem2, VetorItem3;
        BoundingBox BdItem, BdItem2, BdItem3;
        Random rndItemPosition = new Random();
        public static bool ColisaoItem = false;
        public static bool ColisaoItem2 = false;
        public static bool ColisaoItem3 = false;
        public static bool Colisao2Item = false;
        public static bool Colisao2Item2 = false;
        public static bool Colisao2Item3 = false;
        bool AparecerItem1 = true;
        bool AparecerItem2 = true;
        bool AparecerItem3 = true;
        #endregion

        public Itens(Texture2D Item)
        {
            #region Posição Inicial dos itens
            this.Item = Item;
            VetorItem.X = rndItemPosition.Next(100, 700);
            VetorItem.Y = 350;

            VetorItem2.X = rndItemPosition.Next(100, 700);
            VetorItem2.Y = 650;

            VetorItem3.X = rndItemPosition.Next(100, 700);
            VetorItem3.Y = 950;
            #endregion
        }

        public void Update()
        {
            #region Restart
            if (Instrucoes.ResetarItens)
            {
                //Instrucoes.timeRemaining = Instrucoes.timer;
                VetorItem.X = rndItemPosition.Next(100, 700);
                VetorItem.Y = 350;

                VetorItem2.X = rndItemPosition.Next(100, 700);
                VetorItem2.Y = 650;

                VetorItem3.X = rndItemPosition.Next(100, 700);
                VetorItem3.Y = 950;
                ColisaoItem = false;
                ColisaoItem2 = false;
                ColisaoItem3 = false;
                AparecerItem1 = true;
                AparecerItem2 = true;
                AparecerItem3 = true;
                Instrucoes.ResetarItens = false;
            }
            #endregion
            
            #region Tempo Para Começar

            if (Personagem.VetorPersonagem.Y > -70 && Personagem.VetorPersonagem2.Y > -70 || Personagem.VetorPersonagem2.Y > -70 && Personagem.ParaTerreno2 == false || Personagem.ParaTerreno == false && Personagem.VetorPersonagem.Y > -70)
            {
                Personagem.PararC = false;

                if (Personagem.timeRemaining == 0.0f)
                {
                    
                        VetorItem.Y -= (float)Terreno.Velocidade;
                        VetorItem2.Y -= (float)Terreno.Velocidade;
                        VetorItem3.Y -= (float)Terreno.Velocidade;

                }

                #region Quando o Item sair da Tela

                if (VetorItem.Y <= -34)
                {
                    VetorItem.Y = 866;
                    VetorItem.X = rndItemPosition.Next(100, 700);
                    AparecerItem1 = true;

                    if (VetorItem.Y != VetorItem3.Y + 300)
                    {
                        VetorItem.Y = VetorItem3.Y + 300;
                        VetorItem.X = rndItemPosition.Next(100, 700);
                    }
                }

                if (VetorItem2.Y <= -34)
                {
                    VetorItem2.Y = 866;
                    VetorItem2.X = rndItemPosition.Next(100, 700);
                    AparecerItem2 = true;

                    if (VetorItem2.Y != VetorItem.Y + 300)
                    {
                        VetorItem2.Y = VetorItem.Y + 300;
                        VetorItem2.X = rndItemPosition.Next(100, 700);
                    }
                }

                if (VetorItem3.Y <= -34)
                {
                    VetorItem3.Y = 866;
                    VetorItem3.X = rndItemPosition.Next(100, 700);
                    AparecerItem3 = true;

                    if (VetorItem3.Y != VetorItem2.Y + 300)
                    {
                        VetorItem3.Y = VetorItem2.Y + 300;
                        VetorItem3.X = rndItemPosition.Next(100, 700);
                    }
                }
                #endregion

            }
            #endregion

            #region Quando o Item sair da Tela
            // Para o item retornar para a tela por baixo

            if (VetorItem.Y <= -34)
            {
                VetorItem.Y = 866;
                VetorItem.X = rndItemPosition.Next(100, 700);
                AparecerItem1 = true;

                if (VetorItem.Y != VetorItem3.Y + 300)
                {
                    VetorItem.Y = VetorItem3.Y + 300;
                    VetorItem.X = rndItemPosition.Next(100, 700);
                }
            }

            if (VetorItem2.Y <= -34)
            {
                VetorItem2.Y = 866;
                VetorItem2.X = rndItemPosition.Next(100, 700);
                AparecerItem2 = true;

                if (VetorItem2.Y != VetorItem.Y + 300)
                {
                    VetorItem2.Y = VetorItem.Y + 300;
                    VetorItem2.X = rndItemPosition.Next(100, 700);
                }
            }

            if (VetorItem3.Y <= -34)
            {
                VetorItem3.Y = 866;
                VetorItem3.X = rndItemPosition.Next(100, 700);
                AparecerItem3 = true;

                if (VetorItem3.Y != VetorItem2.Y + 300)
                {
                    VetorItem3.Y = VetorItem2.Y + 300;
                    VetorItem3.X = rndItemPosition.Next(100, 700);
                }
            }
            #endregion

            #region BoundigBox

            BdItem = new BoundingBox(new Vector3(VetorItem.X, VetorItem.Y, 0), new Vector3(VetorItem.X + Item.Width, VetorItem.Y + Item.Height + 30, 0));
            BdItem2 = new BoundingBox(new Vector3(VetorItem2.X, VetorItem2.Y, 0), new Vector3(VetorItem2.X + Item.Width, VetorItem2.Y + Item.Height + 30, 0));
            BdItem3 = new BoundingBox(new Vector3(VetorItem3.X, VetorItem3.Y, 0), new Vector3(VetorItem3.X + Item.Width, VetorItem3.Y + Item.Height + 30, 0));

            ColisaoItem = false;
            ColisaoItem2 = false;
            ColisaoItem3 = false;
            Colisao2Item = false;
            Colisao2Item2 = false;
            Colisao2Item3 = false;




            if (Personagem.BdPersonagem.Intersects(BdItem) && AparecerItem1 == true)
            {
                ColisaoItem = true;
                AparecerItem1 = false;
                Poder.GanhouPoder = true;

            }
            if (Personagem.BdPersonagem.Intersects(BdItem2) && AparecerItem2 == true)
            {
                ColisaoItem2 = true;
                AparecerItem2 = false;
                Poder.GanhouPoder = true;

            }
            if (Personagem.BdPersonagem.Intersects(BdItem3) && AparecerItem3 == true)
            {
                ColisaoItem3 = true;
                AparecerItem3 = false;
                Poder.GanhouPoder = true;

            }

            if (Personagem.BdPersonagem2.Intersects(BdItem) && AparecerItem1 == true)
            {
                Colisao2Item = true;
                AparecerItem1 = false;
                Poder.GanhouPoder2 = true;

            }
            if (Personagem.BdPersonagem2.Intersects(BdItem2) && AparecerItem2 == true)
            {
                Colisao2Item2 = true;
                AparecerItem2 = false;
                Poder.GanhouPoder2 = true;

            }
            if (Personagem.BdPersonagem2.Intersects(BdItem3) && AparecerItem3 == true)
            {
                Colisao2Item3 = true;
                AparecerItem3 = false;
                Poder.GanhouPoder2 = true;

            }

            #endregion

        }

        public void Draw(SpriteBatch thespritebacth)
        {
            #region Renderizando imagens
            if (AparecerItem1 == true)
            {
                thespritebacth.Draw(Item, VetorItem, Color.White);
            }
            if (AparecerItem2 == true)
            {
                thespritebacth.Draw(Item, VetorItem2, Color.White);
            }
            if (AparecerItem3 == true)
            {
                thespritebacth.Draw(Item, VetorItem3, Color.White);
            }
            #endregion
        }
    }
}
